package com.yugao.fintech.draper.core.sensitive.handler.regex;

import com.yugao.fintech.draper.core.sensitive.handler.base.SensitiveHandler;

import java.lang.annotation.Annotation;

public abstract class AbstractRegexSensitiveHandler<T extends Annotation> implements SensitiveHandler<T> {
    @Override
    public String desensitize(String origin, T annotation) {
        String regex = getRegex(annotation);
        String replacer = getReplacer(annotation);
        return origin.replaceAll(regex, replacer);
    }

    /**
     * 获取注解上的 regex 参数
     *
     * @param annotation 注解信息
     * @return 正则表达式
     */
    abstract String getRegex(T annotation);

    /**
     * 获取注解上的 replacer 参数
     *
     * @param annotation 注解信息
     * @return 待替换的字符串
     */
    abstract String getReplacer(T annotation);

}